﻿using System.Collections.Generic;
using System.Threading.Tasks;

namespace Odyssey.Consul
{
    using Models;
    public interface ICatalog
    {
        Task Register(ArguCatalogRegister arguCatalogRegister);

        Task Deregister(ArguCatalogDeregister arguDeregister);

        Task<string[]> DatacenterList();

        Task<List<ResultNode>> NodeList(ArguCatalogNodeList arguCatalogNodeList);

        Task<ResultCatalogServiceList> ServiceList(ArguCatalogServiceList arguCatalogServiceList);

        Task<ResultCatalogNodesForServiceList> NodesForServiceList(ArguCatalogNodesForServiceList arguCatalogNodesForServiceList);

        Task ConnectCapableService(string service);

        Task<ResultCatalogServicesForNodeList> ServicesForNodeList(ArguCatalogServicesForNodeList arguCatalogServicesForNodeList);
    }
}
